

import COS from 'cos-js-sdk-v5'
const cos = new COS({
    SecretId: "AKIDRfiYBhz50iCSXREn9TL2Wn7JOIzTktoW",
    SecretKey: "oPmxvhHenjRwDH7j7SaUChy2sUs2ygDX"
});

// 在浏览器端要考虑到跨域问题，所以需要在控制台设置允许跨域

// 上传文件
export function uploadObject(file_key, content, type = 'image/jpeg') {
    return new Promise((resolve, reject) => {
        cos.putObject({
            Bucket: 'oj-1325679006', // 填入您自己的存储桶，必须字段
            Region: 'ap-beijing',  // 存储桶所在地域，例如 ap-beijing，必须字段
            Key: file_key,  // 存储在桶里的对象键（例如1.jpg，a/b/test.txt），必须字段
            Body: content, // 必须，上传文件对象，可以是 input[type="file"]标签选择本地文件后得到的 file 对象
            Headers: {
            'Content-Type': type
            }
        }, function(err, data) {
            if (err) {
                reject(err);
            } else {
                resolve("http://" + data.Location);
            }
        }); 
    });
}

export function getObject(file_key,progressCallback = (data) => {}) {
    return new Promise((resolve, reject) => {
        cos.getObject({
            Bucket: 'oj-1325679006', // 填入您自己的存储桶，必须字段
            Region: 'ap-beijing',  // 存储桶所在地域，例如ap-beijing，必须字段
            Key: file_key,  // 存储在桶里的对象键（例如1.jpg，a/b/test.txt），必须字段
            onProgress: function (progressData) {
                progressCallback(progressData);
            }
        }, function(err, data) {
            if (err) {
                reject(err);
            } else {
                resolve(data.Body);
            }
        });
    });
}

// 判断对象是否存在
export function doesObjectExist(file_key) {
    return new Promise((resolve, reject) => {
        cos.headObject({
        Bucket: 'oj-1325679006', // 填入您自己的存储桶，必须字段
        Region: 'ap-beijing',  // 存储桶所在地域，例如ap-beijing，必须字段
        Key: file_key,  // 存储在桶里的对象键（这里用文件的md5值作为key），必须字段
        }, function(err, data) {
            if (data) {
                resolve({
                    exist: true,
                    path: "http://oj-1325679006.cos.ap-beijing.myqcloud.com/" + file_key
                });
            } else if (err.statusCode == 404) {
                resolve({
                    exist: false,
                    path: ""
                });
            } else if (err.statusCode == 403) {
                resolve({
                    exist: false,
                    path: ""
                });
            }else {
                reject(err);
            }
        });
    });
}